package pile.pay.service;

import pile.pay.entity.Recharge;
import com.baomidou.mybatisplus.extension.service.IService;
import pile.pay.entity.ResponseResult;
import pile.pay.params.recharge.DeleDTO;
import pile.pay.params.recharge.ListDTO;
import pile.pay.params.recharge.RechargeDTO;

import java.util.List;

/**
 * <p>
 * 用户充值表 服务类
 * </p>
 *
 * @author 郭天义
 * @since 2024-06-28
 */
public interface IRechargeService extends IService<Recharge> {


    /**
     * 根据我们自己生成的 订单号 查询充值 信息 加锁  统一下单 支付回调调用
     * @param outTradeNo
     * @return
     */
    Recharge selectByRechargeOrderNoLock(String outTradeNo);


    /**
     * 充值 新的充值接口 返回一个对象
     * @param rechargeDTO
     * @return
     */
    ResponseResult<Recharge> rechargeNew(RechargeDTO rechargeDTO);

    /**
     * 充值回调的逻辑 有三个支付 写一个公共的方法
     * @param recharge
     */
    void rechargeCallbackProcessLogic(Recharge recharge);

    /**
     *
     * 根据第三方支付单号查询 充值表数据
     * @param transactionId
     * @return
     */
    Recharge selectByTransactionIdLock(String transactionId);

    /**
     * 查询支付渠道是3,4的退款订单 sql if判断一下如果是3 就用in (3,4) if是2 就直接用 = 2
     * @param paymentChannel
     * @return
     */
    List<Recharge> selectByRemainingAmountByPaymentChannel(Integer paymentChannel);
}
